Delivering streaming content, especially live or linear video content over a digital network to multiple users, is a difficult proposition. An end user experiences buffering and breaks in the streaming content playback if the streaming content segments are not routed fast enough to the end user or the responding server is too slow to respond to the user's requests. For simplicity, the terms live and linear will be used interchangeably hereafter and the term streaming content will be in reference to any of a linear content stream, a live content stream, or a video-on-demand (VOD) content stream.
A content provider publishes live streaming content to one or more origin servers. The origin servers become the point of origin for distribution of the streaming content across a digital network. In the case of VOD streaming, the content files are stored on storage devices attached to the origin servers. The origin servers can be quickly overwhelmed if having to redistribute the streaming content simultaneously to hundreds, if not thousands, of end users.
To avoid overwhelming the origin servers, the streaming content is typically fanned out from the origin server to other distribution servers that then distribute the streaming content to the end users. This distribution server hierarchy can be many levels deep, with each level fanning out the streaming content to a greater number of destinations.
Each additional layer that is added to the distribution hierarchy does however come at a cost. The additional layers add latency, potential points of failure, and increase the chance of buffering or breaks experienced by the end user as the streaming content must travel through additional network nodes in order to reach the end user.
One way to reduce load on the origin servers and improve streaming content delivery performance is to configure the distribution servers to cache the streaming content that is retrieved from the origin servers while responding to a first end user's request. The cached copy can then be used to satisfy requests from other users without the distribution server having to retrieve another copy of the streaming content from the origin server. However, caching of all content pertaining to a stream is sometimes impractical because the file size of the entire stream can be very large (e.g., gigabytes). Caching such large objects can cause other objects to be flushed from the distribution server cache, thereby decreasing the distribution server cache-hit ratio and reducing overall distribution server performance when the distribution server is tasked with delivering other content in addition to a particular content stream. In other words, even though the streaming content may be cached, requests for all other content would cause the distribution server to retrieve a fresh copy of the content from a corresponding origin server.
Accordingly, there is a need to improve the delivery of streaming content, especially live or linear content streams, by reducing resource utilization in the distribution hierarchy. There is also a need to reduce load on the origin servers when serving streaming content, especially live or linear content streams, from one or more distribution servers. Specifically, there is a need to reduce the number of end user requests that impact the origin servers. There is also a need to improve distribution server caching of streaming content and reduce per stream cache utilization.